package com.wego.converter;

import com.wego.bean.BaseConverter;
import com.wego.bean.ExcelConverter;
import com.wego.domain.details.GameCategoryDetails;
import com.wego.domain.dto.GameCategoryDTO;
import com.wego.domain.entity.GameCategory;
import com.wego.domain.excel.GameCategoryExcel;
import com.wego.domain.vo.GameCategoryVO;
import org.mapstruct.Mapper;

@Mapper(componentModel = "spring")
public interface GameCategoryConverter extends BaseConverter<GameCategory, GameCategoryVO,GameCategoryDetails, GameCategoryDTO>, ExcelConverter<GameCategory, GameCategoryExcel> {
    /**
     * 将GameCategory对象转换为GameCategoryDetails对象
     * 该方法会将GameCategory对象中的status编码转换为对应的文本描述
     *
     * @param gameCategory 源GameCategory对象，包含游戏分类基本信息和状态编码
     * @return GameCategoryDetails对象，包含转换后的游戏分类详细信息，其中status为文本描述
     */
    GameCategoryDetails gameCategory2gameCategoryDetails(GameCategory gameCategory);

    /**
     * 将GameCategory对象转换为GameCategoryExcel对象
     * 该方法会将GameCategory对象中的status编码转换为对应的文本描述，用于Excel导出
     *
     * @param gameCategory 源GameCategory对象，包含游戏分类基本信息和状态编码
     * @return GameCategoryExcel对象，包含转换后的游戏分类Excel信息，其中status为文本描述
     */
    GameCategoryExcel gameCategory2gameCategoryExcel(GameCategory gameCategory);

    /**
     * 将GameCategoryExcel对象转换为GameCategory对象
     * 该方法会将GameCategoryExcel对象中的status文本描述转换为对应的编码
     *
     * @param gameCategoryExcel 源GameCategoryExcel对象，包含从Excel导入的游戏分类信息
     * @return GameCategory对象，包含转换后的游戏分类基本信息，其中status为编码
     */
    GameCategory gameCategoryExcel2gameCategory(GameCategoryExcel gameCategoryExcel);

}
